package com.axapoint.opoc.core.model.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static final ThreadLocal<Session> currentSession = 
        new ThreadLocal <Session> () {
            @Override protected Session initialValue() {
                return sessionFactory.openSession();
        }
    };
	
	private static final SessionFactory sessionFactory;
	static {
        try {
            sessionFactory = new AnnotationConfiguration()
                    .configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log exception!
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession() throws HibernateException {
        return sessionFactory.openSession();
    }
    
    public static Session getCurrentSession() throws HibernateException {
    	return currentSession.get();
    }
}

